OCR |
您所在的位置:网站首页 › ocr recognition美团截图任务 › OCR |
引言
通用文档理解,是OCR任务的终极目标。现阶段的OCR各种垂类任务都是通用文档理解任务的子集。这感觉就像我们一下子做不到通用文档理解,退而求其次,先做各种垂类任务。 现阶段,Transformer技术的发展,让通用文档理解任务变得不再是那么遥不可及,伴随而来的是出现了很多OCR-free的工作。 该部分的工作可以分为三个阶段: 监督类的方法,像LayoutLM系列只有Transformer结构结合了LLM做通用文档理解本篇文章着重梳理第2点和第3点涉及到的OCR-free的通用文档理解的工作。行文难免挂一漏万,还望大家多多指教。 ⚠️注意:行文顺序是从新到旧 (2024 TextSquare) TextSquare: Scaling up Text-Centric Visual Instruction Tuning (2024 mPLUG-DocOwl 1.5) mPLUG-DocOwl 1.5: Unified Structure Learning for OCR-free Document Understandingcode: https://github.com/X-PLUG/mPLUG-DocOwl/tree/main/DocOwl1.5 提出了两个任务:structure-aware parsing 和 multi-grained text localization。 提出DocStruct4M数据集(暂未开源)来支持Unified Structure Learning 常用的vision-to-text方法: MLPCross-attention module with learnable queries以上两种不太适用于high-resolution任务。原因:MLP利用了all spatial information,但是太长了。cross-attention长度合适,但是缺少了spatial information。 H-Reducer通过引入conv来减少sequence长度,引入FC层来映射visual featuers到language embedding space。 加入Conv层操作,有考虑到文档图像中的文本信息都是从左到右排列的,水平排列的文本通常是语义相关的。因此,conv中的kernel size和stride size设置为 1 × 4 1\times 4 1×4,这样经过conv层之后,sequence长度就变为原来的1/4。之后再加一个FC层,用来对齐visual features到language embedding space。 这里conv层的操作,让我想到CRNN论文中的做法:在网络的第3和第4 max-pooling层,用kernel size 1 × 2 1\times 2 1×2的矩形pooling窗口代替传统的方形窗口。这样会产生更宽的特征图,因此特征序列会更长。还有利于识别一些形状较窄的字符。 值得一提的是,UReader中设计了learnable crop position embeddings来标记原始图像中不同行列间的图像块。而在这篇工作中,通过对每一个cropped的图像块添加special textual tokens ,来标记不同的图像块。 (2024 TextMonkey) TextMonkey: An OCR-Free Large Multimodal Model for Understanding Documentcode: https://github.com/Yuliang-Liu/Monkey PS: 整个工作还是比较间接有效,唯一有些缺憾的是相关中文数据用的较少,在中文上效果较差。 (2023 CogAgent) CogAgent: A Visual Language Model for GUI Agentscode: https://github.com/THUDM/CogVLM CogAgent工作聚焦于GUI界面的理解和交互任务。该任务同样面临OCR-free难点问题:GUI界面图像尺寸通常都较大,如何有效保持图像中文本信息同时,又利用其layout信息? 该工作有以下4个亮点,可以借鉴: 提出了High-Resolution Cross-Module。支持 1120 × 1120 1120\times 1120 1120×1120分辨率的视觉输入和对话式问答。拥有视觉Agent的能力,能够在任何图形用户界面截图上,为任何给定任务返回一个计划,下一步行动,以及带有坐标的特定操作。增强了与图形用户界面相关的问答能力,使其能够处理关于任何图形用户界面截图的问题,例如网页、PC应用、移动应用等。通过改进预训练和微调,提高了OCR相关任务的能力。第一个亮点最为有效地提升了输入图像尺寸问题。通过Pix2Struct和Kosmos-2.5工作中,可以得知对于document OCR任务来讲,较小的hidden size就可以取得很好表现(1536 hidden sizes)。 具体做法: 对于一张输入的图像,它被resize到 1120 × 1120 1120\times 1120 1120×1120,送入到high-resolution cross-module;同时也被resize到 224 × 224 224\times 224 224×224,送入到low-resolution模块。之后再送入到Visual Language Decoder中。在high-resolution模块这里,在每一个decoder layer添加了 X h i X_{hi} Xhi和hidden states之间的cross-attention操作。具体可参见上图。 (2023 DocPedia) Docpedia: Unleashing the power of large multimodal model in the frequency domain for versatile document understandingcode: 无 ![]() ![]() code: https://github.com/harrytea/TGDoc
code: https://github.com/LukeForeverYoung/UReader 亮点部分有两个: 为了增强visual text和semantic understanding的能力,作者添加了两个额外的任务,但是是一样的输入格式。这两个任务是text reading和key points generation任务。 由于现有的vision encoder是frozen,也就是说训练过程中不训练该部分,所以其输入图像的尺寸较小,一般是
224
×
224
224 \times 224
224×224。作者提出了shape-adaptive cropping module来动态将输入vision encoder的high-resolution图像切分为合适几块。同时为了学习各个cropped images的位置信息,添加了可学习crop position embeddings。 也让我想到了在做一些遥感类目标检测任务时,由于图像过于大,没有办法一下子输入到模型中去,只好使用一个滑动窗口,overlapping切分该图。 这部分工作和Moneky中的做法不谋而合。相比于Moneky,UReader反而做的更加精细一些。下图是Moneky做法,可注意看从右下角部分。
code: https://github.com/X-PLUG/mPLUG-DocOwl 使用的统一的instruction tuning是:Human:{question} AI:{answer},不同的文档理解数据集都会通过替换{questiong}和{answer}两个关键字段来统一为以上格式。 同时,论文中构建了一个指令理解(instruction understanding)的测评集,名为LLMDoc,来评估多样文档理解能力。 PS: 本篇工作主要贡献点就只有上述两个地方。值得称赞的是,开源的相关的代码和模型,为后续学者研究提供了极大便利。 (2023 UniDoc) Unidoc: A universal large multimodal model for simultaneous text detection, recognition, spotting and understandingcode: 无
由于UniDoc输入图像尺寸是224x224的,因此不能提取fine-grained visual features。这一点也是其后续工作的主要创新点。 (2023 Vary) Vary: Scaling up the Vision Vocabulary for Large Vision-Language Modelscode: https://github.com/Ucas-HaoranWei/Vary 因为在第一阶段训练Vary-tiny时,image encoder用的是在ViTDet上训练所得SAM-base模型,所以其输入图像尺寸是1024x1024x3。这一点可以有效缓解文档类图像在较小尺寸下输入,文字模糊变形问题。但是并未从实际上提高模型的输入尺寸。 PS: 整个Vary工作,我个人认为最大的一点价值是提供了合成中文文档数据的思路,但是并未开源任何合成的相关代码,同时也未开源其模型。 这也难怪后续的工作,很少有与Vary做对比的。这一点从TextMoneky工作中就可看出来。因为Vary用了私有数据集,模型也未开源,所以不能相比。 (2023 Pix2struct)Pix2struct: Screenshot parsing as pretraining for visual language understandingcode: https://github.com/google-research/pix2struct Pix2struct是基于ViT的标准image-encoder-text-decoder结构,论文中并没有给出具体框图,只是说明了相对于标准的结构,做了哪些改变: 由于观察到在一些visual-language task中,对同样图像,输入不同aspect ratio图像,结果有很大影响。因此作者在保持宽高比的基础上,对图像做了scaling,具体做法可参考下图:![]() 以上两点,使得标准的ViT网络更加鲁棒。 值得注意的是,Pix2struct是针对不同任务,都需要重新训练对应的模型。也就是说,我有6个不同visual-language tasks,我就需要分别训练对应6个模型,虽然这6个模型的网络结构是一样的。 PS: 整篇文章看得我有些懵逼,始终没有找到用了多少数据训练的。🤦🏻♀️ (2023 Nougat) Nougat: Neural Optical Understanding for Academic Documentscode: https://github.com/facebookresearch/nougat 对于以上三点,我个人最能受益的是第2点。可以说,构造PDF → mmd格式数据集是整个问题的关键。这一点在后续OCR-free与LLM结合的工作中,体现的更加明显。我自己的确也真正跑通了构造数据集的代码,并得到了大约34w 英文文档数据集。在这里不得不为Nougat的工作点赞。 code: https://github.com/clovaai/donut 虽然之前有基于Transformer的文本识别工作–TrOCR,但是也仅仅限于文本识别这一个单一任务。与之前工作相比,Donut与之前工作的差异,可以用下图中清晰体现出来: 下图就是Text Spotting任务常见结构图(选自PGNet):
PS: 这篇工作可谓是经典之作,打开了新思路。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |